---
title: ProcessOB3PRetention tech debt
summary: Technical debt observations for ProcessOB3PRetention, with severity assigned by the documentation writer.
status: draft
owner: Documents
last_reviewed: 2026-10-22
---

# ProcessOB3PRetention tech debt

The Stage 1 analysis lists observations without severity labels; the severities below are the documentation writer's judgment. No reliance on the framework `Flush()` method was found in application code, so there is no `NotImplementedException` risk of that kind.

## Findings

| ID | Severity | Component | Finding | Impact |
| --- | --- | --- | --- | --- |
| TD-OB3P-001 | HIGH | `ThirdPartyRetentionProcessor` | No transaction or compensation across the OnBase call and the Imaging `PUT` | A failure between them leaves a batch archived but unmarked, so it may be resubmitted* |
| TD-OB3P-002 | HIGH | `JsonHttpClient` (inherited) | Response parse errors are swallowed, so an unparseable body appears as an empty result† | A broken Imaging API response ends in "No claims eligible" with exit code 0, a silent failure |
| TD-OB3P-003 | HIGH | `OnBaseService` | Hardcoded placeholder payload (`test doc`) is sent for every batch | Real purpose of the submission is unclear; may be unfinished work* |
| TD-OB3P-004 | MEDIUM | `OnBaseService` | WCF client is never closed or aborted | Possible connection leak per run |
| TD-OB3P-005 | MEDIUM | `ThirdPartyRetentionProcessor` | `throw ex;` resets the stack trace and duplicates stderr output | Harder diagnosis |
| TD-OB3P-006 | MEDIUM | `ArgContainer` | No range validation on `Day`, `Month`, `Year` | Invalid dates reach the Imaging API |
| TD-OB3P-007 | MEDIUM | Packages | Resolved: the six SAIF framework packages are declared as stable versions in `ProcessOB3PRetention.csproj`, and the stale `packages.config` that still listed prerelease versions was removed | None remaining |
| TD-OB3P-008 | LOW | `App.config` | Resolved: the unused `ProcessOB3PRetention.ProcessBatchSize` setting was removed from `App.config`; the batch size comes from the Environment API | None remaining |
| TD-OB3P-009 | LOW | Packages | Resolved: RestSharp is declared once, at 106.12.0, in `ProcessOB3PRetention.csproj`; the removal of `packages.config` also removed its earlier 105.2.3 pin | None remaining |
| TD-OB3P-010 | LOW | Packages | `SAIF.HashUtil` and `SAIF.Framework.Data.NHibernate` referenced but unused | Unneeded dependencies |
| TD-OB3P-011 | LOW | `ImagingApiClient` | Inconsistent leading slash in API paths | Fragile URL construction |
| TD-OB3P-012 | LOW | `ImagingApiClient` | Audit user `ProcessOB3PRetention` is hardcoded | No per-run attribution |
| TD-OB3P-013 | LOW | `Program` | `Console.ReadLine()` after an argument failure may block an unattended run** | Possible hung job |
| TD-OB3P-014 | LOW | `ThirdPartyRetentionProcessor` | Unused `using SAIF.Common.Extensions` and abstract `TApp` generic | Minor cleanliness |
| TD-OB3P-015 | LOW | Platform | .NET Framework 4.8 with no migration plan in source | Long-term support risk |
| TD-OB3P-016 | LOW | `OnBaseService` | No client credentials configured for the SOAP transport* | Authentication method unclear |

## Open questions

- Whether OnBase deletes documents after a submission is unknown.**
- Where `imagingapiurl` is maintained is unknown.**
- The scheduler's argument values and frequency are unknown.**
- Whether the placeholder payload is intentional is unknown.**

## Related documentation

| Documentation | Description |
| --- | --- |
| [Index](index.md) | Documentation entry point |
| [Overview](overview.md) | Purpose and capabilities |
| [Architecture](architecture.md) | Components and composition root |
| [Run lifecycle](run-lifecycle.md) | Execution flow and exit codes |
| [Arguments](arguments.md) | Argument contract |
| [Configuration](configuration.md) | Settings and environment variables |
| [Dependencies](dependencies.md) | Packages and API dependencies |
| [Operations and processes](operations-processes.md) | Operation catalog |
| [Business rules](business-rules.md) | Rules enforced during processing |
| [Operational runbook](operational-runbook.md) | Run and recovery procedures |

> **Note:** Statements marked with `†` are derived from dependency library
> documentation via the Legends CLI. Statements marked with `*` were inferred
> from code structure or contextual evidence. Statements marked with `**` could
> not be confirmed; treat as unknown until verified.

## Sources

- `ProcessOB3PRetention/ThirdPartyRetentionProcessor.cs`
- `ProcessOB3PRetention/Services/OnBaseService.cs`
- `ProcessOB3PRetention/Services/ImagingApiClient.cs`
- `ProcessOB3PRetention/ArgContainer.cs`
- `ProcessOB3PRetention/Program.cs`
- `ProcessOB3PRetention/App.config`
- `ProcessOB3PRetention/ProcessOB3PRetention.csproj`
